#ifndef STX_FUNCTIONAL_HPP
#define STX_FUNCTIONAL_HPP

namespace stx {

template<typename Pair>
struct less_pair_first
{
    bool operator()(const Pair& x1, const Pair& x2)
    {
        return (x1.first < x2.first);
    }
};

template<typename Pair>
struct less_pair_second
{
    bool operator()(const Pair& x1, const Pair& x2)
    {
        return (x1.second < x2.second);
    }
};

template<typename Pair>
struct greater_pair_first
{
    bool operator()(const Pair& x1, const Pair& x2)
    {
        return (x1.first > x2.first);
    }
};

template<typename Pair>
struct greater_pair_second
{
    bool operator()(const Pair& x1, const Pair& x2)
    {
        return (x1.second > x2.second);
    }
};

} // namespace stx

#endif // STX_FUNCTIONAL_HPP
